#ifndef EXPRESSIONCALCUL
#define EXPRESSIONCALCUL

#include "ExpressionValue.hpp"

extern bool isNumerical ( const ExpressionValue& op );
extern float getNumerical ( const ExpressionValue& op );
extern void setNumerical ( ExpressionValue& op, float value );

extern bool isBoolean ( const ExpressionValue& op );
extern bool getBoolean ( const ExpressionValue& op );
extern void setBoolean ( ExpressionValue& op, bool value );

extern ExpressionValue operator== ( const ExpressionValue& op1, const ExpressionValue& op2 );
extern ExpressionValue operator!= ( const ExpressionValue& op1, const ExpressionValue& op2 );

extern ExpressionValue operator< ( const ExpressionValue& op1, const ExpressionValue& op2 );
extern ExpressionValue operator<= ( const ExpressionValue& op1, const ExpressionValue& op2 );
extern ExpressionValue operator> ( const ExpressionValue& op1, const ExpressionValue& op2 );
extern ExpressionValue operator>= ( const ExpressionValue& op1, const ExpressionValue& op2 );

extern ExpressionValue operator+ ( const ExpressionValue& op1, const ExpressionValue& op2 );
extern ExpressionValue operator- ( const ExpressionValue& op1, const ExpressionValue& op2 );
extern ExpressionValue operator* ( const ExpressionValue& op1, const ExpressionValue& op2 );
extern ExpressionValue operator/ ( const ExpressionValue& op1, const ExpressionValue& op2 );

extern ExpressionValue operator&& ( const ExpressionValue& op1, const ExpressionValue& op2 );
extern ExpressionValue operator|| ( const ExpressionValue& op1, const ExpressionValue& op2 );

#endif
